home *** CD-ROM | disk | FTP | other *** search
/ Quick PC 61 / Quick PC 61.iso / I386 / SASETUP.MSI / F77550_ots_taskview.js < prev    next >
Encoding:
Text File  |  2003-02-21  |  22.5 KB  |  1,153 lines

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=<%=GetCharSet()%>">
  4. <script language="javascript">
  5. // ==============================================================
  6. //     Microsoft Server Appiance
  7. //     Object Task Selector JavaScript functions
  8. //
  9. // Copyright (c) Microsoft Corporation.  All rights reserved.
  10. //
  11. // ==============================================================
  12. var OTS_MESSAGE_BEGIN = "begin";
  13. var OTS_MESSAGE_ITEM = "item";
  14. var OTS_MESSAGE_END = "end";
  15.  
  16.  
  17. var lastItem = 0;
  18. var tabUrl;
  19.  
  20. tabUrl = "Tab1=" +"<%=GetTab1()%>" + "&Tab2=" + "<%=GetTab2()%>";
  21.  
  22.  
  23.  
  24. function SA_IsIE()
  25. {
  26.     if ((navigator.userAgent.toLowerCase()).indexOf("msie") != -1)
  27.         return true;
  28.     else
  29.         return false;
  30. }
  31.  
  32.  
  33. function SA_IsNav()
  34. {
  35.     var sAgent = navigator.userAgent.toLowerCase();
  36.     
  37.     if (sAgent.indexOf("mozilla") != -1
  38.         && sAgent.indexOf("compatible") == -1
  39.         && sAgent.indexOf("spoofer") == -1
  40.         && sAgent.indexOf("opera") == -1
  41.         && sAgent.indexOf("webtv") == -1
  42.         )
  43.         return true;
  44.     else
  45.         return false;
  46. }
  47.  
  48.  
  49.  
  50. function OTS_CompareEqual(item1, item2)
  51. {
  52.     if ( item1 == item2 ) return true;
  53.     else return false;
  54. }
  55.  
  56.  
  57. function OTS_Init(selectItem)
  58. {
  59.     OTS_InitEx(selectItem, OTS_CompareEqual);
  60. }
  61.  
  62. function OTS_InitEx(selectItem, CompareEqualFunction)
  63. {
  64.     var nIndex;
  65.     var objItemList;
  66.     var objOTSForm;
  67.     
  68.     if ( document.forms.length <= 0 ) 
  69.     {
  70.         OTS_UpdateTaskList();
  71.         return;
  72.     }
  73.  
  74.     objOTSForm = eval("document.TVData")
  75.     if ( objOTSForm == null || objOTSForm.length <= 0 )
  76.     {
  77.         OTS_UpdateTaskList();
  78.         return;
  79.     }
  80.  
  81.     objItemList = eval("document.TVData.TVItem_Table1")
  82.     if ( objItemList == null || objItemList.length <= 0 )
  83.     {
  84.         OTS_UpdateTaskList();
  85.         return;
  86.     }
  87.  
  88.     //
  89.     // Multi selection OTS does not support automatic item selection
  90.     if (objItemList[0].type == "checkbox" ){
  91.         OTS_UpdateTaskList();
  92.         return;
  93.     }
  94.  
  95.     
  96.     //
  97.     // Search the list for a matching item
  98.     //
  99.     for(nIndex = 0 ; nIndex < objItemList.length ; nIndex++)
  100.         {
  101.         if (CompareEqualFunction(objItemList[nIndex].value,selectItem))
  102.             {
  103.             objItemList[nIndex].checked = true;
  104.             objItemList[nIndex].focus();
  105.             document.TVData.tSelectedItem.value = selectItem ;
  106.             document.TVData.tSelectedItemNumber.value = nIndex;
  107.             OTS_UpdateTaskList();
  108.             return;
  109.             }
  110.         }
  111.  
  112.     //
  113.     // Item not found, check to see if the form's selected item is set
  114.     if ( document.TVData.tSelectedItem.value.length > 0 )
  115.     {
  116.         for(nIndex = 0 ; nIndex < objItemList.length ; nIndex++)
  117.         {
  118.             if (CompareEqualFunction(objItemList[nIndex].value, document.TVData.tSelectedItem.value))
  119.             {
  120.                 objItemList[nIndex].checked = true;
  121.                 objItemList[nIndex].focus();
  122.                 OTS_UpdateTaskList();
  123.                 return;
  124.             }
  125.         }
  126.     }
  127.     else
  128.     {
  129.         //
  130.         // Default select first item
  131.         //
  132.         objItemList[0].checked = true;
  133.         objItemList[0].focus();
  134.         document.TVData.tSelectedItem.value = objItemList[0].value;
  135.         document.TVData.tSelectedItemNumber.value = 0;
  136.     }
  137.     OTS_UpdateTaskList();
  138.     return;
  139.     
  140. }
  141.  
  142.  
  143.  
  144. var g_bInMultiSelectMode=false;
  145. var g_iMouseDownStartingRow = 0;
  146. var g_bMultiStartingState = false;
  147.  
  148.  
  149.  
  150. function OTS_IsMultiSelectKeyDown()
  151. {
  152.     return true;
  153. }
  154.  
  155.  
  156. function OTS_OnMouseMove(iRowNumber, bMultiSelect)
  157. {
  158.     //SA_TraceOut('OnMouseMove', 'Row: ' + iRowNumber);
  159.  
  160.     if ( g_bInMultiSelectMode )
  161.     {
  162.         objItemList = eval("document.TVData.TVItem_Table1");
  163.         if ( objItemList == null )
  164.         {
  165.             return true;
  166.         }
  167.  
  168.         objItemList[iRowNumber].checked = g_bMultiStartingState;
  169.     }
  170.     return true;
  171. }
  172.  
  173.  
  174. function OTS_OnMouseDown(iRowNumber, bMultiSelect)
  175. {
  176.     //SA_TraceOut('OTS_OnMouseDown', 'Row: ' + iRowNumber);
  177.     
  178.     g_bInMultiSelectMode = false;
  179.         
  180.     if ( bMultiSelect )
  181.     {
  182.  
  183.         if ( !OTS_IsMultiSelectKeyDown())
  184.         {
  185.             return true;
  186.         }
  187.         
  188.         var objItemList;
  189.  
  190.         objItemList = eval("document.TVData.TVItem_Table1");
  191.         if ( objItemList == null )
  192.         {
  193.             return true;
  194.         }
  195.  
  196.         g_bMultiStartingState = !objItemList[iRowNumber].checked;
  197.         g_iMouseDownStartingRow = iRowNumber;
  198.         g_bInMultiSelectMode = true;    
  199.     }
  200.  
  201.     return true;
  202.     
  203. }
  204.  
  205.  
  206. function OTS_OnMouseUp(iRowNumber, bMultiSelect)
  207. {
  208.     //SA_TraceOut('OTS_OnMouseUp', 'Row: ' + iRowNumber);
  209.     
  210.     if ( g_bInMultiSelectMode && bMultiSelect && OTS_IsMultiSelectKeyDown())
  211.     {
  212.         
  213.         g_bInMultiSelectMode = false;
  214.         
  215.         var x;
  216.         var objItemList;
  217.  
  218.         objItemList = eval("document.TVData.TVItem_Table1");
  219.         if ( objItemList == null )
  220.         {
  221.             return true;
  222.         }
  223.             
  224.         for( x = g_iMouseDownStartingRow;
  225.             x <= iRowNumber;
  226.             x++ )
  227.         {
  228.                     
  229.             objItemList[x].checked = g_bMultiStartingState;        
  230.         }
  231.     }
  232.  
  233.     return true;
  234.     
  235. }
  236.  
  237.  
  238.  
  239. var g_itemJustClicked=false;
  240. var    g_iLastSelectedRow = 0;
  241.  
  242.  
  243. function OTS_RowClicked(rowNumber){
  244.     var objItemList;
  245.  
  246.     //
  247.     // Convert parameter to integer value
  248.     rowNumber = parseInt(rowNumber);
  249.     
  250.     //SA_TraceOut('OTS_RowClicked', 'Row: ' + rowNumber);
  251.  
  252.     //
  253.     // Verify that we have a valid OTS table
  254.     objItemList = eval("document.TVData.TVItem_Table1");
  255.     if ( objItemList == null )
  256.     {
  257.         SA_TraceOut('OTS_RowClicked', 'ERROR: eval(document.TVData.TVItem_Table1) returned null');
  258.         OTS_UpdateTaskList();
  259.         return true;
  260.     }
  261.  
  262.  
  263.     //
  264.     // Check for shift-click, which is only supported in multi-select tables
  265.     // for IE browsers.
  266.     if (objItemList[0].type == "checkbox" )
  267.     {
  268.         if ( SA_IsIE() )
  269.         {
  270.             if (window.event.shiftKey)
  271.             {
  272.                 var x;
  273.                 
  274.                 if ( g_iLastSelectedRow > rowNumber )
  275.                 {
  276.                     for ( x = rowNumber; x <= g_iLastSelectedRow; x++ )
  277.                     {
  278.                         objItemList[x].checked = true;
  279.                     }
  280.                 }
  281.                 else
  282.                 {
  283.                     for ( x = g_iLastSelectedRow; x <= rowNumber; x++ )
  284.                     {
  285.                         objItemList[x].checked = true;
  286.                     }
  287.                 }
  288.                 objItemList[rowNumber].focus();
  289.                 g_iLastSelectedRow = rowNumber;
  290.                 OTS_UpdateTaskList();
  291.                 return true;
  292.             }
  293.         }
  294.         else
  295.         {
  296.             // Non-IE Browser 
  297.         }
  298.     }
  299.     g_iLastSelectedRow = rowNumber;
  300.  
  301.  
  302.     //
  303.     // If the input control was directly clicked then we don't need
  304.     // to simulate selecting it, and we are out-of-here.
  305.     if ( g_itemJustClicked )
  306.     {
  307.         g_itemJustClicked = false;
  308.         return true;
  309.     }
  310.  
  311.         
  312.     //
  313.     // Multi-selection Widget
  314.     if (objItemList[0].type == "checkbox" )
  315.     {
  316.  
  317.         //
  318.         // If the row is checked, then un-check it
  319.         if ( objItemList[rowNumber].checked == true ) 
  320.         {
  321.             objItemList[rowNumber].checked = false;
  322.             objItemList[rowNumber].focus();
  323.             OTS_UpdateTaskList();
  324.             return true;
  325.         }
  326.         //
  327.         // Else check the row
  328.         else 
  329.         {
  330.             objItemList[rowNumber].checked = true;
  331.             objItemList[rowNumber].focus();
  332.             OTS_UpdateTaskList();
  333.             return true;
  334.         }
  335.             
  336.     }
  337.  
  338.     //
  339.     // Single selection OTS Widget
  340.     else 
  341.     {
  342.             
  343.         document.TVData.tSelectedItem.value = objItemList[rowNumber].value;
  344.         document.TVData.tSelectedItemNumber.value = rowNumber;
  345.         objItemList[rowNumber].checked = true;
  346.         objItemList[rowNumber].focus();
  347.     }
  348.  
  349.     OTS_UpdateTaskList();
  350.     return true;
  351.     
  352. }
  353.  
  354.  
  355. function OTS_OnItemClicked(item, itemNumber)
  356. {
  357.     //SA_TraceOut('OTS_OnItemClicked', 'Row: ' + itemNumber);
  358.     
  359.     g_itemJustClicked=true;
  360.     document.TVData.tSelectedItem.value = item;
  361.     document.TVData.tSelectedItemNumber.value = itemNumber;
  362.  
  363.     OTS_UpdateTaskList();
  364.     
  365.     return true;
  366. }
  367.  
  368. function OTS_OnSelectTask(iTaskNo, pKeyName, objectName, actionName, taskTitle, taskPageType, bMultiSelect)
  369. {
  370.     var oException;
  371.     try
  372.     {
  373.         return OTS_OnSelectTaskInternal(iTaskNo, pKeyName, objectName, actionName, taskTitle, taskPageType, bMultiSelect)
  374.     }
  375.     catch(oException)
  376.     {
  377.         if ( SA_IsDebugEnabled() )
  378.         {
  379.         alert("Javascript exception in OTS_OnSelectTask. Error: " + oException.number + " Description: " + oException.description );
  380.         }
  381.     }
  382. }
  383.  
  384. function OTS_OnSelectTaskInternal(iTaskNo, pKeyName, objectName, actionName, taskTitle, taskPageType, bMultiSelect)
  385. {
  386.     //
  387.     // Make sure task is enabled
  388.     //
  389.     if ( !OTS_IsTaskEnabled(iTaskNo) )
  390.     {
  391.         return;
  392.     }
  393.     
  394.     actionName = SA_MungeURL(actionName, "<%=SAI_FLD_PAGEKEY%>", "<%=SAI_GetPageKey()%>");
  395.  
  396.     if ( parseInt(bMultiSelect) == 1 ) 
  397.     {
  398.         //alert("OTS_OnSelectTask(MultiSelect)");
  399.         
  400.         switch(''+taskPageType) {
  401.             case '<%=OTS_PT_PROPERTY%>':
  402.             case '<%=OTS_PT_TABBED_PROPERTY%>':
  403.             case '<%=OTS_PT_WIZARD%>':
  404.                 OTS_PostPropertyPage(pKeyName, objectName, actionName, taskTitle);
  405.                 break;
  406.             
  407.             case '<%=OTS_PT_AREA%>':
  408.                 OTS_PostNormalPage(pKeyName, objectName, actionName, taskTitle);
  409.                 break;
  410.             
  411.             case '<%=OTS_PT_NEW_WINDOW%>':
  412.                 OTS_PostNewPage(pKeyName, objectName, actionName, taskTitle);
  413.                 break;
  414.                 
  415.             case '<%=OTS_PT_RAW%>':
  416.                 OTS_PostRawPage(pKeyName, objectName, actionName, taskTitle);
  417.                 break;
  418.                 
  419.             default:
  420.                 SA_TraceOut("OTS_OnSelectTask()", 'ISSUE: Invalid page type: ' + taskPageType );
  421.                 break;
  422.             }
  423.     }
  424.     else 
  425.     {
  426.         //alert("OTS_OnSelectTask(Single Select)");
  427.  
  428.         switch(taskPageType) 
  429.         {
  430.             case '<%=OTS_PT_PROPERTY%>':
  431.             case '<%=OTS_PT_TABBED_PROPERTY%>':
  432.             case '<%=OTS_PT_WIZARD%>':
  433.                 OTS_OpenPropertyPage(pKeyName, objectName, actionName, taskTitle);
  434.                 break;
  435.             
  436.             case '<%=OTS_PT_AREA%>':
  437.                 OTS_OpenNormalPage(pKeyName, objectName, actionName, taskTitle);
  438.                 break;
  439.             
  440.             case '<%=OTS_PT_NEW_WINDOW%>':
  441.                 OTS_OpenNewPage(pKeyName, objectName, actionName, taskTitle);
  442.                 break;
  443.             
  444.             case '<%=OTS_PT_RAW%>':
  445.                 OTS_OpenRawPage(pKeyName, objectName, actionName, taskTitle);
  446.                 break;
  447.             
  448.             default:
  449.                 SA_TraceOut("OTS_OnSelectTask()", 'ISSUE: Invalid page type: ' + taskPageType );
  450.                 break;
  451.             }
  452.     }
  453.     return true;
  454. }
  455.  
  456.  
  457. function OTS_PostPropertyPage(pKeyName, objectName, actionURL, taskTitle)
  458. {
  459.     
  460.     var vRoot = "<%=m_VirtualRoot%>"
  461.     var sTaskURL = vRoot + "sh_taskframes.asp";
  462.     var i;
  463.     
  464.     if ( vRoot == "" )
  465.     {
  466.         vRoot = "/"
  467.     }
  468.     
  469.     var sReturnURL = top.location.href;
  470.     if ( SA_GetVersion() >= 2 ) 
  471.     {
  472.         sReturnURL = OTS_MungeSearchSort(sReturnURL);
  473.     }
  474.     sReturnURL = SA_MungeURL(sReturnURL, "R", ""+Math.random());
  475.  
  476.  
  477.     sTaskURL = SA_MungeURL(sTaskURL, "Title", taskTitle);
  478.     sTaskURL = SA_MungeURL(sTaskURL, "URL", actionURL);
  479.     sTaskURL = SA_MungeURL(sTaskURL, "ReturnURL", sReturnURL);
  480.     sTaskURL = SA_MungeURL(sTaskURL, "R", ""+Math.random());
  481.     
  482.     document.TVData.action =  sTaskURL;
  483.     document.TVData.method = 'post';
  484.     document.TVData.target = "";
  485.     document.TVData.submit();
  486.  
  487.     return true;
  488. }
  489.  
  490.  
  491. function OTS_PostNormalPage(pKeyName, objectName, actionURL, taskTitle)
  492. {
  493.     var vRoot = "<%=m_VirtualRoot%>";
  494.     var sPageURL = vRoot + actionURL;
  495.     var sReturnURL;
  496.     var i;
  497.  
  498.     if ( vRoot == "" )
  499.     {
  500.         vRoot = "/"
  501.     }
  502.  
  503.  
  504.     sReturnURL = SA_MungeExtractURLParameter(sPageURL, "ReturnURL");
  505.     
  506.     if ( sReturnURL.length <= 0 )
  507.     {
  508.         //alert("Using default ReturnURL: " + sReturnURL);
  509.         sReturnURL = top.location.href;
  510.     }
  511.     else
  512.     {
  513.         //alert("Using Task provided ReturnURL: " + sReturnURL);
  514.     }
  515.     
  516.     if ( SA_GetVersion() >= 2 ) 
  517.     {
  518.         sReturnURL = OTS_MungeSearchSort(sReturnURL);
  519.     }
  520.     sReturnURL = SA_MungeURL(sReturnURL, "R", ""+Math.random());
  521.  
  522.     sPageURL = SA_MungeURL(sPageURL, "Title", taskTitle);
  523.     sPageURL = SA_MungeURL(sPageURL, "ReturnURL", sReturnURL);
  524.     sPageURL = SA_MungeURL(sPageURL, "R", ""+Math.random());
  525.  
  526.  
  527.     //
  528.     // Must disable toolbar when posting to an Area page.
  529.     OTS_DisableToolbar();
  530.  
  531.     document.TVData.action = sPageURL;
  532.     document.TVData.target = "";
  533.     document.TVData.submit();
  534.     return true;
  535. }
  536.  
  537.  
  538. function OTS_PostNewPage(pKeyName, objectName, actionURL, taskTitle)
  539. {
  540.     var sPageURL;
  541.     var vRoot = "<%=m_VirtualRoot%>"
  542.     var i;
  543.  
  544.     if ( vRoot == "" )
  545.     {
  546.         vRoot = "/"
  547.     }
  548.  
  549.     var sReturnURL = top.location.href;
  550.     if ( SA_GetVersion() >= 2 ) 
  551.     {
  552.         sReturnURL = OTS_MungeSearchSort(sReturnURL);
  553.     }
  554.     sReturnURL = SA_MungeURL(sReturnURL, "R", ""+Math.random());
  555.  
  556.     sPageURL = vRoot + actionURL;
  557.     sPageURL = SA_MungeURL(sPageURL, "Title", taskTitle);
  558.     sPageURL = SA_MungeURL(sPageURL, "ReturnURL", sReturnURL);
  559.     sPageURL = SA_MungeURL(sPageURL, "R", ""+Math.random());
  560.  
  561.  
  562.     //
  563.     // Must disable toolbar when posting to an Area page.
  564.     OTS_DisableToolbar();
  565.     
  566.     document.TVData.action = sPageURL;
  567.     document.TVData.target = "_blank";
  568.     document.TVData.submit();
  569.  
  570.     // Change target back to empty value
  571.     document.TVData.target = "";
  572.     OTS_ResetSelections();
  573.  
  574.     return true;
  575. }
  576.  
  577.  
  578. function OTS_PostRawPage(pKeyName, objectName, actionURL, taskTitle)
  579. {
  580.     var sPageURL;
  581.     var vRoot = "<%=m_VirtualRoot%>"
  582.     var i;
  583.  
  584.     if ( vRoot == "" )
  585.     {
  586.         vRoot = "/"
  587.     }
  588.  
  589.     var sReturnURL = top.location.href;
  590.     if ( SA_GetVersion() >= 2 ) 
  591.     {
  592.         sReturnURL = OTS_MungeSearchSort(sReturnURL);
  593.     }
  594.     sReturnURL = SA_MungeURL(sReturnURL, "R", ""+Math.random());
  595.  
  596.     sPageURL = vRoot + actionURL;
  597.     sPageURL = SA_MungeURL(sPageURL, "Title", taskTitle);
  598.     sPageURL = SA_MungeURL(sPageURL, "ReturnURL", sReturnURL);
  599.     sPageURL = SA_MungeURL(sPageURL, "R", ""+Math.random());
  600.  
  601.  
  602.     //
  603.     // Must disable toolbar when posting to an Area page.
  604.     OTS_DisableToolbar();
  605.     
  606.     document.TVData.action = sPageURL;
  607.     document.TVData.target = "_blank";
  608.     document.TVData.submit();
  609.  
  610.     // Change target back to empty value
  611.     document.TVData.target = "";
  612.     OTS_ResetSelections();
  613.     
  614.     return true;
  615. }
  616.  
  617.  
  618. function OTS_OpenPropertyPage(pKeyName, objectName, actionName, taskTitle)
  619. {
  620.     var taskLink;
  621.     var vRoot = "<%=m_VirtualRoot%>"
  622.     var i;
  623.  
  624.     if ( vRoot == "" )
  625.     {
  626.         vRoot = "/"
  627.     }
  628.     
  629.     if ( document.TVData.tSelectedItem.value == "" )
  630.     {
  631.         var e = document.TVData.elements[0];
  632.         document.TVData.tSelectedItem.value = e.value;
  633.     }
  634.  
  635.  
  636.     i = actionName.indexOf('?');
  637.  
  638.     if (i == -1)
  639.     {
  640.         taskLink = actionName + "?" + tabUrl;
  641.     }
  642.     else
  643.     {
  644.         taskLink = actionName + "&" + tabUrl;
  645.     }
  646.     taskLink = SA_MungeURL(taskLink, pKeyName, document.TVData.tSelectedItem.value);
  647.  
  648.         
  649.     //
  650.     // Form a correct Return URL. This requires appending the PKey parameter to the
  651.     // return URL.
  652.     var sReturnURL = top.location.href;
  653.  
  654.     //
  655.     // Strip off the random number query string parameter
  656.     sReturnURL = SA_MungeURL(sReturnURL, "R", "");
  657.  
  658.     //
  659.     // Strip off the previous PKey query string parameter
  660.     // JK 1-16-01
  661.     // Replaced following section with following line
  662.     sReturnURL = SA_MungeURL(sReturnURL, pKeyName, document.TVData.tSelectedItem.value);
  663.     
  664.     //
  665.     // Add OTS Search item and value if they are set
  666.     if ( SA_GetVersion() >= 2 ) 
  667.     {
  668.         sReturnURL = OTS_MungeSearchSort(sReturnURL);
  669.     }
  670.     
  671.     OpenPage(vRoot, taskLink, sReturnURL, taskTitle)
  672.     return true;
  673. }
  674.  
  675.  
  676. function OTS_OpenNormalPage(pKeyName, objectName, actionName, taskTitle)
  677. {
  678.     var taskLink;
  679.     var vRoot = "<%=m_VirtualRoot%>"
  680.     var sReturnURL        
  681.     var i;
  682.  
  683.     if ( vRoot == "" )
  684.     {
  685.         vRoot = "/"
  686.     }
  687.     
  688.     if ( document.TVData.tSelectedItem.value == "" )
  689.     {
  690.         var e = document.TVData.elements[0];
  691.         document.TVData.tSelectedItem.value = e.value;
  692.     }
  693.  
  694.  
  695.     i = actionName.indexOf('?');
  696.  
  697.     if (i == -1)
  698.     {
  699.         taskLink = actionName + "?" + tabUrl;
  700.     }
  701.     else
  702.     {
  703.         taskLink = actionName + "&" + tabUrl;
  704.     }
  705.  
  706.     taskLink = SA_MungeURL(taskLink, pKeyName, document.TVData.tSelectedItem.value);
  707.  
  708.     
  709.     //
  710.     // Add ReturnURL param
  711.     sReturnURL = SA_MungeExtractURLParameter(taskLink, "ReturnURL");
  712.     //alert(sReturnURL);
  713.     if ( sReturnURL.length <= 0 )
  714.     {
  715.         sReturnURL = top.location.href;
  716.     }
  717.     else
  718.     {
  719.         sReturnURL = unescape(sReturnURL);
  720.     }
  721.     //alert(sReturnURL);
  722.     if ( SA_GetVersion() >= 2 ) 
  723.     {
  724.  
  725.         //
  726.         // Strip off the random number query string parameter
  727.         sReturnURL = SA_MungeURL(sReturnURL, "R", "");
  728.  
  729.         sReturnURL = SA_MungeURL(sReturnURL, pKeyName, document.TVData.tSelectedItem.value);
  730.         sReturnURL = OTS_MungeSearchSort(sReturnURL);
  731.         
  732.         taskLink = SA_MungeURL(taskLink, "ReturnURL", sReturnURL);
  733.     }
  734.     
  735.  
  736.     OpenNormalPage(vRoot, taskLink)
  737.     return true;
  738. }
  739.  
  740.  
  741. function OTS_OpenNewPage(pKeyName, objectName, actionName, taskTitle)
  742. {
  743.     var taskLink;
  744.     var vRoot = "<%=m_VirtualRoot%>"
  745.     var i;
  746.  
  747.     if ( vRoot == "" )
  748.     {
  749.         vRoot = "/"
  750.     }
  751.     
  752.     if ( document.TVData.tSelectedItem.value == "" )
  753.     {
  754.         var e = document.TVData.elements[0];
  755.         document.TVData.tSelectedItem.value = e.value;
  756.     }
  757.  
  758.  
  759.     i = actionName.indexOf('?');
  760.  
  761.     if (i == -1)
  762.     {
  763.         taskLink = actionName + "?" + tabUrl;
  764.     }
  765.     else
  766.     {
  767.         taskLink = actionName + "&" + tabUrl;
  768.     }
  769.     taskLink = SA_MungeURL(taskLink, pKeyName, document.TVData.tSelectedItem.value);
  770.  
  771.     OpenNewPage(vRoot, taskLink, "")
  772.     return true;
  773. }
  774.  
  775.  
  776. function OTS_OpenRawPage(pKeyName, objectName, actionName, taskTitle)
  777. {
  778.     OpenRawPage(actionName);
  779.     return true;
  780. }
  781.  
  782.  
  783. function OTS_OnShowTaskDescription(description)
  784. {
  785.     window.status = description;
  786.     return true;
  787. }
  788.  
  789.  
  790. function OTS_OnMacroMultiSelect()
  791. {
  792.     var nIndex;
  793.     var objItemList;
  794.     var objOTSForm;
  795.     
  796.     if ( document.forms.length <= 0 ) 
  797.     {
  798.         return;
  799.     }
  800.  
  801.     objOTSForm = eval("document.TVData")
  802.     if ( objOTSForm == null || objOTSForm.length <= 0 )
  803.     {
  804.         return;
  805.     }
  806.  
  807.     objItemList = eval("document.TVData.TVItem_Table1")
  808.     if ( objItemList == null || objItemList.length <= 0 )
  809.     {
  810.         return;
  811.     }
  812.  
  813.     //
  814.     // Only supported for multi selection OTS
  815.     if (objItemList[0].type != "checkbox" ){
  816.         return;
  817.     }
  818.     
  819.  
  820.     //
  821.     // Two element list is special case. When we have two elements
  822.     // we need to see if second is the hidden placeholder that's used
  823.     // to ensure this guy is an array object.
  824.     if ( objItemList.length == 2 )
  825.     {
  826.         var oException;
  827.         
  828.         objItemList[0].checked = objOTSForm.fldMacroMultiSelect.checked;
  829.         try {
  830.             if ( objItemList[1].value.lastIndexOf("2_RowHidden") < 0 )
  831.                 {
  832.                 objItemList[1].checked = objOTSForm.fldMacroMultiSelect.checked;
  833.                 }
  834.             }
  835.         catch(oException)
  836.             {
  837.                 if ( SA_IsDebugEnabled() )
  838.                 {
  839.                     alert("Javascript exception in OTS_OnMacroMultiSelect. Number: " + oException.number + " Description: " + oException.description );
  840.                 }
  841.             }
  842.         OTS_UpdateTaskList();
  843.         return;
  844.     }
  845.     
  846.     //
  847.     // Search the list for a matching item
  848.     //
  849.     for(nIndex = 0 ; nIndex < objItemList.length ; nIndex++)
  850.         {
  851.             objItemList[nIndex].checked = objOTSForm.fldMacroMultiSelect.checked;
  852.         }
  853.  
  854.     OTS_UpdateTaskList();
  855.     return;
  856. }
  857.  
  858.  
  859. function OTS_TaskObject(TaskFunctionIn)
  860. {
  861.     this.TaskFunction = TaskFunctionIn;
  862. }
  863.  
  864.  
  865. var iTaskAny_ItemCount = 0;
  866. function OTS_TaskAny(sMessage, iTaskNo, iItemNo)
  867. {
  868.     var rc = true;
  869.     
  870.     if ( sMessage.toLowerCase() == OTS_MESSAGE_BEGIN )
  871.     {
  872.         iTaskAny_ItemCount = 0;
  873.     }
  874.     else if ( sMessage.toLowerCase() == OTS_MESSAGE_ITEM )
  875.     {
  876.         //
  877.         // Increment the item count
  878.         iTaskAny_ItemCount += 1;
  879.         
  880.         //
  881.         // No need to continue, we have at least one item
  882.         rc = false;
  883.     }
  884.     else if ( sMessage.toLowerCase() == OTS_MESSAGE_END )
  885.     {
  886.         if ( iTaskAny_ItemCount > 0 )
  887.         {
  888.             OTS_SetTaskEnabled(iTaskNo, true);
  889.         }
  890.         else
  891.         {
  892.             OTS_SetTaskEnabled(iTaskNo, false);
  893.         }
  894.     }
  895.     
  896.     return rc;
  897. }
  898.  
  899. var iTaskOne_ItemCount = 0;
  900. function OTS_TaskOne(sMessage, iTaskNo, iItemNo)
  901. {
  902.     var rc = true;
  903.     
  904.     if ( sMessage.toLowerCase() == OTS_MESSAGE_BEGIN )
  905.     {
  906.         iTaskOne_ItemCount = 0;
  907.     }
  908.     else if ( sMessage.toLowerCase() == OTS_MESSAGE_ITEM )
  909.     {
  910.         //
  911.         // Increment the item count
  912.         iTaskOne_ItemCount += 1;
  913.         
  914.     }
  915.     else if ( sMessage.toLowerCase() == OTS_MESSAGE_END )
  916.     {
  917.         if ( iTaskOne_ItemCount != 1 )
  918.         {
  919.             OTS_SetTaskEnabled(iTaskNo, false);
  920.         }
  921.         else
  922.         {
  923.             OTS_SetTaskEnabled(iTaskNo, true);
  924.         }
  925.     }
  926.     
  927.     return rc;
  928. }
  929.  
  930.  
  931. function OTS_TaskAlways(sMessage, iTaskNo, iItemNo)
  932. {
  933.     var rc = true;
  934.     
  935.     if ( sMessage.toLowerCase() == OTS_MESSAGE_BEGIN )
  936.     {
  937.     }
  938.     else if ( sMessage.toLowerCase() == OTS_MESSAGE_ITEM )
  939.     {
  940.         //
  941.         // Don't need to see all the items
  942.         rc = false;
  943.     }
  944.     else if ( sMessage.toLowerCase() == OTS_MESSAGE_END )
  945.     {
  946.             OTS_SetTaskEnabled(iTaskNo, true);
  947.     }
  948.     
  949.     return rc;
  950. }
  951.  
  952.  
  953. function OTS_GetTaskObject(iTaskNo)
  954. {
  955.     return window.document.getElementById("OTSTask"+iTaskNo);
  956. }
  957.  
  958.  
  959. function OTS_IsTaskEnabled(iTaskNo)
  960. {
  961.     var rc = false;
  962.     var oTask = OTS_GetTaskObject(iTaskNo);
  963.  
  964.     if ( oTask.className.toLowerCase().indexOf("disabled") > 0 )
  965.     {
  966.         rc = false;
  967.     }
  968.     else
  969.     {
  970.         rc = true;
  971.     }
  972.  
  973.     return rc;
  974. }
  975.  
  976.  
  977. function OTS_OnTaskHover(iTaskNo, bEnter)
  978. {
  979.     if ( OTS_IsTaskEnabled(iTaskNo) )
  980.     {
  981.         if ( bEnter )
  982.         {
  983.             OTS_SetTaskClass(iTaskNo, 'TasksTextHover');
  984.         }
  985.         else
  986.         {
  987.             OTS_SetTaskClass(iTaskNo, 'TasksText');
  988.         }
  989.         
  990.     }
  991.     else
  992.     {
  993.         OTS_SetTaskClass(iTaskNo, 'TasksTextDisabled');
  994.     }
  995. }
  996.  
  997.  
  998. function OTS_SetTaskEnabled(iTaskNo, bEnabled)
  999. {
  1000.     if ( bEnabled == true )
  1001.     {
  1002.         OTS_SetTaskClass(iTaskNo, "TasksText");
  1003.     }
  1004.     else
  1005.     {
  1006.         OTS_SetTaskClass(iTaskNo, "TasksTextDisabled");
  1007.     }
  1008. }
  1009.  
  1010.  
  1011. function OTS_SetTaskClass(iTaskNo, sClassName)
  1012. {
  1013.     var oTask = OTS_GetTaskObject(iTaskNo);
  1014.  
  1015.     oTask.className = sClassName;
  1016. }
  1017.  
  1018.  
  1019. function OTS_UpdateTaskList()
  1020. {
  1021.     var x;
  1022.     var rc;
  1023.     var fn;
  1024.     var nIndex;
  1025.     var objItemList;
  1026.     var oException;
  1027.  
  1028.     objItemList = eval("document.TVData.TVItem_Table1")
  1029.  
  1030.     //alert("Entering OTS_UpdateTaskList");
  1031.     
  1032.     //
  1033.     // Fire messages to Task objects
  1034.     //
  1035.     for( x = 0; x < aTasks.length; x++)
  1036.     {
  1037.         //
  1038.         // Begin message
  1039.         //
  1040.         fn = aTasks[x].TaskFunction;
  1041.         fn += "('begin', "+ x + ", 0)";
  1042.         try {
  1043.             eval(fn);
  1044.         }catch(oException){
  1045.             if ( SA_IsDebugEnabled() )
  1046.             {
  1047.                 alert("Error: Javascript function " + aTasks[x].TaskFunction + " does not exist." );
  1048.             }
  1049.         }
  1050.  
  1051.  
  1052.         //
  1053.         // Item selected message
  1054.         //
  1055.         if ( objItemList != null && objItemList.length > 0 )
  1056.         {
  1057.             for(nIndex = 0 ; nIndex < objItemList.length ; nIndex++)
  1058.             {
  1059.                 if (objItemList[nIndex].checked == true)
  1060.                 {
  1061.                     fn = aTasks[x].TaskFunction;
  1062.                     fn += "('item', "+ x + ", "+nIndex+")";
  1063.                     try {
  1064.                         rc = eval(fn);
  1065.                     }catch(oException){
  1066.                         rc = false;
  1067.                     }
  1068.                     if ( !rc ) break;
  1069.                 }
  1070.             }
  1071.         }
  1072.  
  1073.         
  1074.         //
  1075.         // End message
  1076.         //
  1077.         fn = aTasks[x].TaskFunction;
  1078.         fn += "('end', "+ x + ", 0)";
  1079.         try {
  1080.             eval(fn);
  1081.         }catch(oException){
  1082.         }
  1083.  
  1084.     }
  1085. }
  1086.  
  1087.  
  1088. function OTS_ResetSelections()
  1089. {
  1090.     var nIndex;
  1091.     var objItemList;
  1092.     var objOTSForm;
  1093.     var oException;
  1094.     
  1095.     if ( document.forms.length <= 0 ) 
  1096.     {
  1097.         OTS_UpdateTaskList();
  1098.         return;
  1099.     }
  1100.  
  1101.     objOTSForm = eval("document.TVData")
  1102.     if ( objOTSForm == null || objOTSForm.length <= 0 )
  1103.     {
  1104.         OTS_UpdateTaskList();
  1105.         return;
  1106.     }
  1107.  
  1108.     objItemList = eval("document.TVData.TVItem_Table1")
  1109.     if ( objItemList == null || objItemList.length <= 0 )
  1110.     {
  1111.         OTS_UpdateTaskList();
  1112.         return;
  1113.     }
  1114.  
  1115.     //
  1116.     // Only perform reset for Multi selection OTS
  1117.     if (objItemList[0].type != "checkbox" ){
  1118.         OTS_UpdateTaskList();
  1119.         return;
  1120.     }
  1121.  
  1122.     
  1123.     //
  1124.     // Unselect all items
  1125.     //
  1126.     for(nIndex = 0 ; nIndex < objItemList.length ; nIndex++)
  1127.     {
  1128.         objItemList[nIndex].checked = false;
  1129.     }
  1130.  
  1131.     try
  1132.     {
  1133.         objItemList = eval("document.TVData.fldMacroMultiSelect")
  1134.         if ( objItemList != null )
  1135.         {
  1136.             objItemList.checked = false;
  1137.         }
  1138.     }
  1139.     catch(oException)
  1140.     {
  1141.  
  1142.     }
  1143.     
  1144.     OTS_UpdateTaskList();
  1145.     return;
  1146.     
  1147. }
  1148.  
  1149.  
  1150. </script>
  1151. </head>
  1152. </html>
  1153.